package com.qhw.ReflectMultipleFields;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class App {
    public static void main(String[] args) throws Exception{
        Class<?> R = Class.forName("com.qhw.ReflectMultipleFields.Animals");
        Object o = R.newInstance();
        //通过类对象获取该类下所有的字段
        Field[] declaredFields = R.getDeclaredFields();
        //通过getDeclaredFields获取该类下所有字段
        //并通过高级数组遍历，对每个字段通过getType().toString.endsWith("字段类型")来判断类型
        //且需要对每个字段设置访问权限set.setAccessible(true)
        for(Field field :declaredFields){
            Class<?> type = field.getType();
            field.setAccessible(true);
            if (type.toString().endsWith("String"))
                field.set(o,"xzw");
            else if (type.toString().endsWith("Integer"))
              field.set(o,3);
            else if(type.toString().endsWith("Double"))
                field.set(o,188.2);
        }
        Method run = R.getDeclaredMethod("run");
        //调用实例o的run方法
        run.invoke(o);
    }
}
